package com.gitee.ly.chain;

import java.util.List;

/**
 * Link 环节，一个环节对象不可属于多个流程，只能属于一个流程。
 *
 * @author ly
 **/
public interface Link {
    /**
     * 环节顺序。在流程中，该顺序唯一。
     * <p>
     * 注意：-1代表无序。 sort必须大于等于0。
     *
     * @return
     */
    int getSort();

    /**
     * 环节类型。在流程中，该类型唯一。且系统中所有环节的类型是唯一的。
     *
     * @return
     */
    String getType();

    /**
     * 环节名称。在流程中，该名称唯一。且系统中所有环节的名称是唯一的。
     *
     * @return
     */
    String getName();

    /**
     * 获取该环节下所有涉及的表单。表单(该流程、环节下的顺序)按顺序从小到大排好。
     * <p>
     * 注意：一个表单可能参与其它流程环节，在其它流程环节的顺序可能不一样。
     * 比如：表单USER在流程1环节A中的顺序是2，在流程1环节B中的顺序是3，在流程2中环节C的顺序是1。
     *
     * @return
     */
    List<Form> allForm();
}
